﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using WBGModel;
using System.Data;

namespace WBGDal
{
    public class DalUsuario : ICRUD
    {
        public List<ModelUsuario> Listar()
        {
            return Listar("");
        }

        public List<ModelUsuario> Listar(string filtro)
        {
            String cmd = "SELECT * FROM Usuario" + (filtro.CompareTo("") == 0 ? "" : " WHERE " + filtro);
            return ConvertToList(UtilBanco.ExecComRetorno(cmd));
        }

        private List<ModelUsuario> ConvertToList(DataTable resultSet)
        {
            List<ModelUsuario> lst = new List<ModelUsuario>();
            for (int i = 0; i < resultSet.Rows.Count; i++)
            {
                DataRow dr = resultSet.Rows[i];
                ModelUsuario usuario = new ModelUsuario();
                usuario.idUsuario = Convert.ToInt32(dr["idUsuario"]);
                usuario.idPessoa = Convert.ToInt32(dr["idPessoa"]);
                usuario.nome = dr["nome"].ToString();
                usuario.senha = dr["senha"].ToString();
                usuario.ativo = Convert.ToBoolean(dr["ativo"]);

                if (dr["ultimoAcesso"] == DBNull.Value)
                    usuario.ultimoAcesso = null;
                else
                    usuario.ultimoAcesso = Convert.ToDateTime(dr["ultimoAcesso"]);

                lst.Add(usuario);
            }
            return lst;
        }

        public void Inserir(ModelUsuario obj)
        {
            String cmd = String.Format("INSERT INTO Usuario (idPessoa,nome,senha,ativo,ultimoAcesso) VALUES ('{0}','{1}','{2}','{3}','{4}')", obj.idPessoa, obj.nome, obj.senha, obj.ativo, obj.ultimoAcesso);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Alterar(ModelUsuario obj)
        {
            String cmd = String.Format("UPDATE Usuario SET idPessoa='{0}',nome='{1}',senha='{2}',ativo='{3}',ultimoAcesso='{4}' WHERE idUsuario={5}", obj.idPessoa, obj.nome, obj.senha, obj.ativo, obj.ultimoAcesso, obj.idUsuario);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Deletar(int id)
        {
            String cmd = String.Format("DELETE FROM Usuario WHERE idUsuario={0}", id);
            UtilBanco.ExecSemRetorno(cmd);
        }
    }
}
